package cn.kgm.thread;

public class ThreadSleepFlag {
    /**
     * 测试结果1:
     * 外层线程:main
     * 内层线程运行中:Thread-0
     * 内层线程运行中:Thread-0
     * 内层线程运行中:Thread-0
     * 线程结束
     */

    /**
     * 测试结果2:
     * 内层线程运行中:Thread-0
     * 外层线程:main
     * 内层线程运行中:Thread-0
     * 内层线程运行中:Thread-0
     * 线程结束
     */

    /**
     * 测试结果不同的分析:新建线程与主线程并行,并不能确定谁走在谁的前面
     */
    public volatile static boolean flag = true;

    public static void main(String[] args) throws InterruptedException {

        new Thread(() -> {
            try {
                while (flag) {
                    System.out.println("内层线程运行中:" + Thread.currentThread().getName());
                    Thread.sleep(1000L);
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }).start();
        System.out.println("外层线程:" + Thread.currentThread().getName());
        Thread.sleep(3000L);
        flag = false;
        System.out.println("线程结束");
    }
}
